home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 1.toast / Sample Code / Contributed / SpriteWorld / SpriteWorld Files / Utils / Brian's Extensions / SWTranslucentBlitters.h < prev   
Encoding:
Text File  |  2000-10-06  |  4.3 KB  |  157 lines  |  [TEXT/CWIE]

  1. ///--------------------------------------------------------------------------------------
  2. //    SWTranslucentBlitters.h
  3. ///--------------------------------------------------------------------------------------
  4.  
  5. #ifndef __TRANSLUCENCY__
  6. #define __TRANSLUCENCY__
  7.  
  8. #ifndef __QUICKDRAW__
  9. #include <QuickDraw.h>
  10. #endif
  11.  
  12. #ifndef __SWCOMMON__
  13. #include <SWCommonHeaders.h>
  14. #endif
  15.  
  16. #ifndef __SPRITEWORLDUTILS__
  17. #include <SpriteWorldUtils.h>
  18. #endif
  19.  
  20. #ifndef __SPRITEFRAME__
  21. #include <SpriteFrame.h>
  22. #endif
  23.  
  24. #ifndef __SPRITE__
  25. #include <Sprite.h>
  26. #endif
  27.  
  28. #ifndef __BLITPIXIEINTERFACE__
  29. #include <BlitPixieInterface.h>
  30. #endif
  31.  
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35.  
  36. #if __MWERKS__
  37.     #define SWInline inline
  38. #else
  39.     #define SWInline
  40. #endif
  41.     
  42. #if (defined(powerc) || defined(__powerc)) && !defined(MPW_C)
  43. #define USE_PPC_ASSEMBLY 1
  44. #else 
  45. #define USE_PPC_ASSEMBLY 0
  46. #endif
  47.  
  48.  
  49.     
  50. ///--------------------------------------------------------------------------------------
  51. //    define the tables used for colors
  52. ///--------------------------------------------------------------------------------------
  53.  
  54. #define ABS(x) (((x)<0) ? (-(x)) : (x))
  55. #define kNumberOfColors 256
  56.  
  57. extern unsigned char*    g8BitTranslucencyTable;
  58. extern RGBColor         kSystemColorArray[kNumberOfColors];
  59. extern int gNumberOf8BitTranslucencyLevels;
  60.  
  61.  
  62. ///--------------------------------------------------------------------------------------
  63. //    8-bit color table function prototypes
  64. ///--------------------------------------------------------------------------------------
  65.  
  66. unsigned char    ColorToIndex(long curRed, long curGreen, long curBlue);
  67. long     CalcNewColorValue (long sourceValue, long blendValue, float ratio);
  68. void     Calc8BitTranslucencyTable (int numberOfLevels);
  69. void     CreateCLUTTable(void);
  70.  
  71. // The public functions
  72. OSErr     SWLoadOrCreate8BitTranslucencyTable (int numberOfLevels);
  73. OSErr     SWCreate8BitTranslucencyTable (int numberOfLevels);
  74. void     SWDispose8BitTranslucencyTable(void);
  75. OSErr     SWLoad8BitTranslucencyTable(short resourceID);
  76. OSErr     SWSave8BitTranslucencyTable(short resourceID);
  77.  
  78.  
  79. ///--------------------------------------------------------------------------------------
  80. //    Function prototypes for translucent 8-bit blitters
  81. ///--------------------------------------------------------------------------------------
  82.  
  83. SW_FUNC OSErr SWSetSpriteTranslucencyLevel(
  84.     SpritePtr srcSpriteP,
  85.     unsigned long level);
  86.  
  87. SW_FUNC unsigned long SWGetSpriteTranslucencyLevel(
  88.     SpritePtr srcSpriteP);
  89.  
  90. ///--------------------------------------------------------------------------------------
  91. //    Function prototypes for translucent 8-bit blitters
  92. ///--------------------------------------------------------------------------------------
  93.  
  94. SW_FUNC void BlitPixie8BitTranslucentMaskDrawProc(
  95.     FramePtr srcFrameP, 
  96.     FramePtr dstFrameP, 
  97.     Rect *srcRect, 
  98.     Rect *dstRect);
  99.  
  100. SW_FUNC void BlitPixieTranslucentMask8Bit(
  101.     register unsigned long *srcPixelP,
  102.     register unsigned long *dstPixelP,
  103.     register unsigned long *maskPixelP,
  104.     register unsigned long rowsToCopy,
  105.     register unsigned long numBytesPerRow,
  106.     register unsigned long srcOffset,
  107.     register unsigned long dstOffset,
  108.     unsigned long translucencyLevel);
  109.  
  110. unsigned char SWInline TranslucencyConvertChar (
  111.     register unsigned char srcPixel, 
  112.     register unsigned char destPixel, 
  113.     register unsigned long maskPixel,
  114.     register unsigned char *tableAtLevel);
  115.  
  116. unsigned long SWInline TranslucencyConvertLong (
  117.     register unsigned long srcPixel, 
  118.     register unsigned long destPixel, 
  119.     register unsigned long maskPixel,
  120.     register unsigned char *tableAtLevel);
  121.  
  122. unsigned long Blend8BitPixels (int level, int source, int dest);
  123.  
  124. ///-----------------------------------------------
  125. // 16 Bit Bliiters
  126.  
  127. #define kNumberOf16BitTranslucencyLevels 32
  128. extern unsigned char *g16BitTranslucencyTable;
  129.  
  130. OSErr SWCreate16BitTranslucencyTable( void );
  131. void SWDispose16BitTranslucencyTable( void );
  132.  
  133. void BlitPixieTranslucencyMask16Bit (    
  134.                 register unsigned char *lookup_ptr,
  135.                 register short *srcPtr,
  136.                 register short *dstPtr,
  137.                 register short *maskPtr,
  138.                 register unsigned long heightAndWidth,
  139.                 register long srcRowBytes,
  140.                 register long dstRowBytes,
  141.                 register long alpha
  142.                 );
  143.  
  144. SW_FUNC void BlitPixie16BitTranslucentMaskDrawProc(
  145.     FramePtr srcFrameP, 
  146.     FramePtr dstFrameP, 
  147.     Rect *srcRect, 
  148.     Rect *dstRect);
  149.  
  150. unsigned long Blend16BitPixels (int level, int source, int dest);
  151.  
  152. #ifdef __cplusplus
  153. }
  154. #endif
  155.  
  156. #endif /* __TRANSLUCENCY__ */
  157.